あなたが建築家だと想像してみてください。一つのレンガ造りの家に固定された計画を描くのではなく、木材、鋼材、ガラスなどに対応できるマスターデザインを考案します。 設計図 木材、鋼材、ガラスなどに適応可能なものです。C++では、これが 汎用プログラミングです。
1. 設計図の仕組み
「 テンプレートパラメータリスト (例: template <typename T>)は、プレースホルダとして呼ばれるものを導入します。 テンプレート型パラメータこれらは型に対する変数として機能します。たとえば、 template <typename T> ostream &print(ostream &os, const T &obj)において、 T T は関数が呼び出されたときのみ決定されます。
2. インスタンシエーション
コンパイラはテンプレート自体を機械語にコンパイルしません。代わりに、 インスタンシエーション が発生します:コンパイラは具体的な テンプレート引数 が提供されたときだけ、特定のコードバージョンを生成します。このため、定義は通常ヘッダー・ファイル内に置かれる必要があります。
3. 型に依存しないコードの書き方
再利用性を最大化するためには、 最良の実践法:要件を最小限に抑えることです。 < 演算子(less<T> を通して) less<T>を使用することで、 >において、 <=、および >=という演算子を使用する場合よりも、型に対する要件を減らすことができます。検証はしばしば遅延します。コンパイラは一般的にテンプレート自身のコンパイル段階で多くのエラーを見つけることはできません。ほとんどのエラーはインスタンシエーション時に現れます。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>